
module Multiplexor8x1 (data_in0,data_in1,data_in2,data_in3,data_in4,data_in5,data_in6,data_in7, data_out,control);
input [7:0] data_in0,data_in1,data_in2,data_in3,data_in4,data_in5,data_in6,data_in7;
input [2:0] control;
output [7:0] data_out;
reg [7:0] data_out;

always @(*)
 begin
	case(control)
	0: data_out = data_in0;
	1: data_out = data_in1;
	2: data_out = data_in2;
	3: data_out = data_in3;
	4: data_out = data_in4;
	5: data_out = data_in5;
	6: data_out = data_in6;
	7: data_out = data_in7;
	endcase
end
endmodule

module Multiplexor8x1x34 (data_in0,data_in1,data_in2,data_in3,data_in4,data_in5,data_in6,data_in7, data_out,control);
input [33:0] data_in0,data_in1,data_in2,data_in3,data_in4,data_in5,data_in6,data_in7;
input [2:0] control;
output [33:0] data_out;
reg [33:0] data_out;

always @(*)
 begin
	case(control)
	0: data_out = data_in0;
	1: data_out = data_in1;
	2: data_out = data_in2;
	3: data_out = data_in3;
	4: data_out = data_in4;
	5: data_out = data_in5;
	6: data_out = data_in6;
	7: data_out = data_in7;
	endcase
end
endmodule



module Multiplexor4x1x16bits (data_in0,data_in1,data_in2,data_in3,data_out,control);
input [15:0] data_in0,data_in1,data_in2,data_in3;
input [1:0] control;
output [15:0] data_out;
reg [15:0] data_out;

always @(*)
 begin
	case(control)
	0: data_out = data_in0;
	1: data_out = data_in1;
	2: data_out = data_in2;
	3: data_out = data_in3;
	endcase
end

endmodule
